// Function.call()
/**
 * 
 * Function.call()用于改变Function中的this执行，以及调用Function
 * 接收两个参数，第一个是当前作用域的this,剩下的参数位是传入该Function的参数
 * 如果第一个参数为null或undefind,则Function中的this默认指向全局对象
 * 
 * */ 


// 自定义一个call()  ...args代表传入的参数位
function call(Fn, obj, ...args) {
  // 判断
  if(obj === undefined || obj === null) {
    obj = globalThis;//全局对象 （浏览器为window,nodeJs为global）
  }
  // 为obj添加临时方法,将传入的方法赋值为该临时方法
  obj.temp = Fn 
  // 调用 temp 方法 ，这样就实现了 Fn中的this指向了obj
  let result  = obj.temp(...args);
  // 删除 temp 方法
  delete obj.temp;
  // 返回执行结果
  return result
}